Assembler Subroutinen fürs AtariWiki

← Zurück zum Forum

Ich eröffne mal einen neuen Thread für "unser" neues großes Projekt...

Als allererstes würde ich vorschlagen, daß wir einen Koordinator für dieses Projekt finden. Dieser sollte entsprechend die Ideen sammeln und auch später koordinieren und quasi den "Hut auf haben" damit wir das gut koordiniert und sortiert ins Wiki stellen. Carsten sollte hierfür einen Bereich im Wiki einrichten, wo dann auch der Link aus dem ABBUC hinzeigt. Der Bereich sollte eine Baumstruktur haben, die der Koordinator verwalten und auch selber erweitern kann - aber nur er, da sonst Chaos entsteht. Die Bereiche werden thematisch gegliedert, die Assemblercodes sollten eine möglichst einheitliche Struktur aufweisen und zunächst primär für MADS lauffähig sein, unter MADS verzichten wir aber auf sehr spezielle "Befehle", so daß die Codes sehr einfach für einen nativen Assembler benutzt werden können.

Die Routinen werden mit Kommentaren gut dokumentiert, zusätzlich sollten wir die verschiedenen Themen auch in Beiträgen erklären. Die Routinen können zusätzlich in Maschinencode umgewandelt werden, gerne machen wir auch noch einen Action! - Code daraus.

Am Ende soll neben einem umfangreichen und gegliederten online-Nachschlagwerk von Assembler-Subroutinen ein Buch entstehen - hier braucht man dann noch zeitnah ein Team. Was denkt ihr??

Finde ich gut.

Welchen "Namen" wollen wir dem Projekt (URL) geben?

Eine Konvention fuer die Seiten-Namen und die Baum-Struktur sollten wir auch vorbereiten.

Hier ein paar Ideen für Themen

  • Disketten IO (SIO)
  • DOS IO (CIO)
  • Tastatur
  • Bildschirm
  • DLI
  • ATASCII
  • Zeichensatz
  • Grafik
    • Antic Modi
    • Display List
    • Player/Missile
    • VBXE
  • Interrupts
  • Mathe
  • Netzwerk (FujiNet etc)
  • Dateiformate
  • Sound
  • Musik
    • Tracker
  • Töne
  • Pokey
  • Stereo-Pokey
  • Konvertierung von anderen 6502 Rechnern
  • Konvertierung von nicht 6502 Rechnern

(hier fehlt sicher noch viel, aber es ist ein Anfang)

https://mastodon.social/@cstrotm https://abbuc.social

Weitere Themen:

Software-Sprites Kollisionserkennung

Gruß Wolfgang

RAM unter ROM eigenes kleines angepasstes OS Multiplexing Banks incl. Switching

Datenstrukturen (Listen, Bäume etc)

https://mastodon.social/@cstrotm https://abbuc.social

schon sehr gut... Carsten, du könntest schon mal anfangen die Baumstruktur zu bauen. Wir brauchen einen Verantwortlichen, der alles strukturiert usw. (wie oben beschrieben) - ich schlage Janko (Kveldulfur) vor, ich bin in sehr enger täglichen Kommunikation mit Janko und er hat immer die Antworten oder passenden Lösungen auf meine vielen Fragen parat!

Dr. Irata schrieb: schon sehr gut... Carsten, du könntest schon mal anfangen die Baumstruktur zu bauen. Wir brauchen einen Verantwortlichen, der alles strukturiert usw. (wie oben beschrieben) - ich schlage Janko (Kveldulfur) vor, ich bin in sehr enger täglichen Kommunikation mit Janko und er hat immer die Antworten oder passenden Lösungen auf meine vielen Fragen parat!

Ich wuerde gerne bis nach Weihnachten warten ... bis ich das Update eingespielt habe ... sonst muss ich ggf. Arbeit doppelt machen. Ist das OK?

https://mastodon.social/@cstrotm https://abbuc.social

Bei Assembler wäre ich eher beim atasm (Plain 6502 Assembler, wie es der MAC/65 versteht) ohne mva oder andere seltsame Macros.

  • MADS vs atasm was sind die Unterschiede

Andere Themen

  • Highscore in Games, Incrementierung, schnelle Darstellung, Highscores speichern
  • Player/Missiles, mehr als 4 Player gleichzeitig nebst Multiplexing
  • Software Sprites
  • flotte Positionsberechnungen
  • Pokey Stereo Effekte
  • Hardware-Erkennung, PAL und NTSC in einem Programm

  • Code Optimierungen -- Messungen -- wo lohnt es sich

  • Tipps

Janko möchte nicht die Hauptverantwortung tragen - Lars, was ist mit dir?? Oder PPS?

Moin!

Das Peter mich vorgeschlagen hat, hat mich sehr geschmeichelt, aber ich denke nicht, dass ich die richtige Person wäre.

Lars hat viel Erfahrung, was die Programmierung an geht. Er füllt wahrscheinlich die ganzen Beiträge schon alleine 🙂 Oder halt Peter selbst. Er hat das ganze ins Rollen gebracht und ist sehr engagiert. Seine Beiträge in der Magazin-Beilage sprechen zudem für ihn.

Grüße Janko

Meine Projekte findest Du hier...

Lass mich mal eine Nacht darüber nachdenken.

Ich bin auch für die normalen 65(C)02 Mnemonics. C, weil man vielleicht auch mal was für die Speedy schreiben will und da ist halt eine 65C02 drin. Dann könnte man in der KB zusätzlich "Assembler" als Programm unterbringen, und darunter dann MADS usw, wo dann deren Eigenheiten und "Goodies" wieder Themen sein können. Wie wäre das? CU, Erhard

Jede Info, die zu Hause auf meinem Rechner liegt habe ich unterwegs nicht verfügbar. Jede Info, die im Netz liegt finde ich nicht wieder, wenn ich sie benötige.

Ich kann gerne helfen beim Source Code sammeln. Aber verwalten mache ich besser nicht. Kann die verfügbare Zeit nicht wirklich garantieren. Es gibt Phasen, da geht das ohne Probleme, dann wieder ewig nicht.

Persönlich wird es für mich schon schwierig meinen Code extra aufzuweichen für andere Umgebungen als WUDSN + MADS. Ich hin da mittlerweile so reingewachsen - nutze dabei noch lange nicht mal alle Möglichkeiten.

PP´s of STARSOFTBerlin____github|meine Webseite|Demozoo

Ich denke es reicht bei MADS in den Kommentaren einen Hinweis zu hinterlassen, was die speziellen (Makro) Befehle machen, so das der Code für Nicht-MADS-Experten lesbar bleibt.

https://mastodon.social/@cstrotm https://abbuc.social

Da sich Lars nicht gemeldet hat und es ja eigentlich auch meine Idee war und ich das Projekt richtig gut und wichtig finde, mache ich es gerne! Da brauche ich natürlich jede Menge Hilfe und gute Codes von allen. Ich werde das dann entsprechend zusammentragen und koordinieren, damit die Codes immer ein ähnliches Gesicht haben und möglichst von allen gut nutzbar sind! @Carsten: wir setzen uns mal zusammen und besprechen das hinsichtlich AtariWiki… LG Peter

Bei mir ist es wie bei @pps ich habe nicht jeden Tag Zeit. Es kommt gerne mal vor, das ich Dinge längere Zeit liegen lasse, die müssen reifen. Jetzt gerade vor Weihnachten ist so eine Zeit, da komme ich weniger zum schreiben.

Nevertheless bin ich aber beim Code sammeln und soweit aufbereiten gerne dabei.

Bei mir ist es halt so, das ich nicht WUDSN/MADS verwende sondern eher Emacs oder IntelliJ und die Projekte mit Makefiles zusammen halte. Auch verwende ich gerne meinen eigenen (Hobby) Compiler, weil es einfach schneller geht Software in einer "Hochsprache" zu schreiben.

Und wer jetzt mault, weil hier ja eher Assembler gefordert ist: Mein Compiler erzeugt Atasm/Mac65 Assembler-Source-Code und als Kommentare steht dort immer noch der Original Source-Code. Voll praktisch.

Alles gut Lars, bin schon sehr gespannt auf deine Beiträge! Du programmierst also mittels eines Texteditors und kompilierst das dann durch deinen eigenen Compiler in Assembler für A8?

Ja genau so.

Auf der Konsole muss ich dann nur "make" tippern, dann wird der Compiler angeworfen, dann der Assembler und am Ende falls kein Fehler auftrat wird der atari800 Emulator gestartet. Alles was gebraucht wird, wird per Script auf ein ATR Image kopiert.

Falls ich es richtig eingestellt habe, kann ich auch mit "make debug" bauen und dann den Altirra im Debug Mode starten. Dabei ist der eigene Source-Code den der Compiler in den Kommentaren ablegt, sehr hilfreich.

Ich bin bisher noch nicht dazu gekommen, den Compiler mal im WUDSN einzubinden. Sollte eigentlich möglich sein.

...das wäre sicherlich mal echt interessant mit WUDSN! Jetzt aber die Frage: Was wird denn kompiliert? Also in welcher "Hochsprache" schreibst du die Programme? Ist das dann so eine Art Cund dein Compiler setzt das dann in Atari-Assemblercode um?

Die Hochsprache ist ähnlich wie Action!. Hatte ich vor über 30 Jahren mal in Turbobasic geschrieben (so 1987), und vor ein paar Jahren hab ich damit Oxygene BE neu geschrieben. Danach habe ich die Sprache in Java übersetzt und ein paar Fehler ausgemerzt, die da drin noch schlummerten. Aktuell erweitere ich eher den Peephole-Optimizer.

Hier mal ein Code-Beispiel einer selbst geschriebenen Funktion, sieht aus wie Action!

word n
// mit 2 byte (word) lassen sich nur die Zahlen bis fib(24) berechnen
function fibonacci(n)
begin
  if n < 2 then
  begin
    return n
  end

  n := fibonacci(n-1) + fibonacci(n-2)
  return n
end
[...]

Wird spätestens dann klar, wenn man den rekursiven Aufruf im Ausdruck sieht, das geht in Action! so nicht.

Hier als Beispiel, was der Compiler mit -O 3 daraus macht:

;
; [9]  function fibonacci(n)
;
FIBONACCI
FIBONACCI_I
 LDA N
 PHA
 LDY #1
 LDA (@HEAP_PTR),Y
 STA N
 LDA N+1
 PHA
 INY
 LDA (@HEAP_PTR),Y
 STA N+1
 CLC
 LDA @HEAP_PTR
 ADC #3
 STA @HEAP_PTR
;
; [11]  if n < 2 then
;
 LDY N
 LDX N+1
 STY @ERG
 STX @ERG+1
 LDY #<2
 LDX #>2
 CPY @ERG
 BNE ?NE1
 CPX @ERG+1
 BEQ ?FA1
?NE1
 CPY @ERG
 TXA
 SBC @ERG+1
 BVC ?VC1
 EOR #$80
?VC1
 BPL ?THEN1 ; (28)
?FA1
 JMP ?ELSE1
?THEN1
;
; [13]  
;
 LDY N
 LDX N+1
 JMP ?RETURN1
?ELSE1
?ENDIF1
;
; [22]  n := fibonacci(n-1) + fibonacci(n-2)
;
 LDX N+1
 LDY N
 BNE ?WORD_INDEX_SUB23
 DEX
?WORD_INDEX_SUB23
 DEY ; (22)
 TYA
 LDY #1
 STA (@HEAP_PTR),Y
 TXA
 INY
 STA (@HEAP_PTR),Y
 JSR FIBONACCI_I
 TYA
 PHA
 TXA
 PHA
 SEC
 LDA N
 SBC #<2
 TAY
 LDA N+1
 SBC #>2
 TAX
 TYA
 LDY #1
 STA (@HEAP_PTR),Y
 TXA
 INY
 STA (@HEAP_PTR),Y
 JSR FIBONACCI_I
 STY @OP
 STX @OP+1
 PLA
 TAX
 PLA
 CLC
 ADC @OP
 STA N ; (5)
 TXA
 ADC @OP+1
 STA N+1 ; (4)
;
; [23]  
;
 LDY N
 TAX ; (102)
?RETURN1
 SEC
 LDA @HEAP_PTR
 SBC #3
 STA @HEAP_PTR
 PLA
 STA N+1
 PLA
 STA N
 RTS

Der Assembler-Code mag nicht optimal sein, aber für normale Programme reicht es vollkommen aus.

Man könnte den Compiler-Parser auch so anpassen, das er Python ähnlich sieht. Aber ich kann Python bisher nicht wirklich gut. Auch ist das begin - end eher eine Krücke, weil der Atari keine '{' '}' Klammern kann. Aber ich habe mich daran gewöhnt und es so gelassen. Die Sprache lässt sich sehr einfach parsen, ein ';' wird nicht gebraucht.

Und warum ich nicht in C schreibe, weil ich die Pointer-Arithmetik nicht mag und die Runtime in CC65 eine Unbekannte ist. Noch schlimmer ist es beim LLVM, dessen Runtime kenne ich nicht und die scheint sehr groß zu sein. Dafür sind dessen Optimizer wesentlich besser.

BTW: Die Runtime meines Compilers belegt am Ende vielleicht 142 Bytes und es lässt sich alles anpassen. Ich kann damit den ganzen Atari nutzen und beliebig das RAM verwenden.

Mehr hier: https://github.com/the-atari-team

So, das Update ist eingespielt, unter https://atariwiki.org gibt es nun das AtariWiki in der neusten (Software) Version.

Einige Plugins funktionieren noch nicht, daran arbeite ich noch.

Die neue Software unterstützt Markdown, allerdings nicht gemischt mit dem JSPWiki-Markup. D.h. wenn ich auf Markdown umschalte, dann rendern die > 1000 Seiten im AtariWiki nicht mehr korrekt :(

Die Wiki-Engine (JSPWiki) unterstützt auf der gleichen Plattform unterschiedliche Wikis. Ich würde daher ein neues Wiki auf der Engine einrichten, und dort Markdown einschaltet.

Dieses neue Wiki bekommt eine eigene Domain (unterhalb atariwiki.org) und einen eigenen Namen (und ggf. auch ein eigenes Design). Die Inhalte sind später auch im (grossen) AtariWiki findbar, oder direkt im neuen Wiki.

Welche Domain/Namen soll das Wiki bekommen?

  • programmer.atariwiki.org
  • code.atariwiki.org
  • ...

https://mastodon.social/@cstrotm https://abbuc.social

dev.atariwiki.org?

codes.atariwiki.org

Das Wiki ist eingerichtet und unter https://codes.atariwiki.org und https://dev.atariwiki.org erreichbar.

Ich habe Peter Zugriff auf das Wiki gegeben, Peter richtet die Basis-Seiten ein, dann können alle anderen "loslegen".

Ich arbeite in den kommenden Wochen an dem Design, so das das Wiki sich in die ABBUC Seite einfügen kann. Wir setzen dann einen Link von der ABBUC Seite auf das Wiki, und es wird ein Link vom Wiki zurück auf die ABBUC Seite geben.

Die Inhalte werden später auch im AtariWiki erreichbar sein, daran arbeite ich noch.

https://mastodon.social/@cstrotm https://abbuc.social

Hi,

im Moment sieht es so aus, als müsse man sich auch zum Lesen anmelden.

Oder scheint das nur so, weil es noch nicht fertig eingerichtet ist?

Allen alles Gute für das neue Jahr

Erhard

Jede Info, die zu Hause auf meinem Rechner liegt habe ich unterwegs nicht verfügbar. Jede Info, die im Netz liegt finde ich nicht wieder, wenn ich sie benötige.

Ich könnte mir vorstellen, beim Zusammentragen von SIO-Kommandos (und deren Beschreibung) mitzuarbeiten ...

Jede Info, die zu Hause auf meinem Rechner liegt habe ich unterwegs nicht verfügbar. Jede Info, die im Netz liegt finde ich nicht wieder, wenn ich sie benötige.

Hallo in die Runde, zunächst schon mal vorab vielen Dank an Carsten für die Einrichtung. Der Baum steht schon von ihm - einen Zugang habe ich aktuell auch nicht. Am liebsten hätte ich es eigentlich, wenn nicht jeder die kompletten Schreibrechte hat, sondern alles über mich geht, damit das alles dann nicht wie Kraut und Rüben wird, sondern alles geordnet und ein ähnliches "Gesicht" bekommt. Was denkt ihr?? Liebe Grüße Peter

Hallo Peter,

gesundes Neues!! .

Was denkt ihr??

sehr gute Einstellung !

dl7ukk

Grundsätzlich stimme ich auch für ein möglichst einheitliches Design. Ich schätze aber, daß z.B. das Design für SIO vielleicht bei VBXE nicht zweckmäßig sein könnte ... Ferner sollte eine Formatierung / Formatvorlage auf möglichst einfachen Techniken beruhen, damit nicht wie z.B. in einer mit MS Word für MS Outlook generierten eMailsignatur die Formatierungsbefehle den Inhalt um den Faktor 10+ oder so überwiegen.

Jede Info, die zu Hause auf meinem Rechner liegt habe ich unterwegs nicht verfügbar. Jede Info, die im Netz liegt finde ich nicht wieder, wenn ich sie benötige.

Erhard schrieb: Hi,

im Moment sieht es so aus, als müsse man sich auch zum Lesen anmelden.

Oder scheint das nur so, weil es noch nicht fertig eingerichtet ist?

Allen alles Gute für das neue Jahr

Erhard

Da gibt es noch einen Fehler, die Links gehen direkt in den "Edit" Modus, nicht in den "View" Modus. Für "Edit" muss man angemeldet sein.

https://mastodon.social/@cstrotm https://abbuc.social

Moin!

Ich denke, dass Peter ersteinmal alleine die Artikel einarbeiten sollte und man ihm das notwendige Material zur Verfügung stellt. Wenn man dann erkennen kann, wie es grundsätzlich aussehen soll, kann man den Personenkreis immer noch erweitern. Wahrscheinlich wird man vorher sowieso noch das Layout im Forum besprechen. 😉

Grüße Janko

Meine Projekte findest Du hier...

cas schrieb:

Erhard schrieb: Hi,

im Moment sieht es so aus, als müsse man sich auch zum Lesen anmelden.

Oder scheint das nur so, weil es noch nicht fertig eingerichtet ist?

Allen alles Gute für das neue Jahr

Erhard

Da gibt es noch einen Fehler, die Links gehen direkt in den "Edit" Modus, nicht in den "View" Modus. Für "Edit" muss man angemeldet sein.

Fehler sollte behoben sein. Bitte einmal testen ob ihr die Seite "Disketten IO" von der Hauptseite aus aufrufen könnt.

https://mastodon.social/@cstrotm https://abbuc.social

cas schrieb: Bitte einmal testen ob ihr die Seite "Disketten IO" von der Hauptseite aus aufrufen könnt.

Hi!

Geht!

Grüße Janko

Meine Projekte findest Du hier...

... erste kleine Subroutine ist drin - bitte mal testen !

--> Mathe / Betrag

Dr. Irata schrieb: ... erste kleine Subroutine ist drin - bitte mal testen !

--> Mathe / Betrag

Kann ich sehen, sieht gut aus

https://mastodon.social/@cstrotm https://abbuc.social

Ich habe eine Liste der "letzten Änderungen" in das Menü eingebaut.

Hat jemand einen Vorschlag für ein Logo (oben links)?

https://mastodon.social/@cstrotm https://abbuc.social

Dr. Irata schrieb: ... erste kleine Subroutine ist drin - bitte mal testen !

--> Mathe / Betrag

Top! Aber! Um das jetzt gleich mal zur Diskussion zu stellen, ich würde es etwas ausführlicher machen.

  1. Ruhig etwas mehr Prosa
  2. Gerne ab und zu die "Enter/Return" Taste, damit Werte leichter verständlich sind. Ich mag es nicht und finde es schrecklich, wenn in einer Zeile bla und blub und foo und bar stehen.
  3. Gerne darf auch ein Beispiel in Basic folgen.
  4. Desweiteren sollten wir uns angewöhnen den Wertebereich mit anzugeben. Gerade bei 16 Bit kommt gerne mal verwirrender Code dabei heraus.
  5. In Assembler sollte eine Sprungmarke immer eine eigene Zeile bekommen, sonst zerreißt es den Code gerne mal.
  6. Assembler-Code sollte immer mit einem Namen für die "Funktion" anfangen.
  7. Bitte gerne auch Kommentare, warum es einen Sprung gibt (hier hinter bcs) oder.

Meine Idee(n) würden also so aussehen:

------------------- snip ---------------------- Betrag bestimmen bei Subtraktion:

mathematisch: Beispiel: c = |a-b| also bei a=10 und b=6 => c=4 und bei a=6 und b=10 => c=4

In Basic: c = abs(a-b)

In Assembler: Der Wertebereich ist hier nur 8Bit also 0-255

betrag
    sec
    lda a
    sbc b
    bcs weiter  ; (a >= b) --> weiter
    sbc #0
    eor #$ff    ; Zahl nochmal negieren
weiter
    sta c

Hallo Lars, für Wünsche, Korrekturen und Verbesserungen bin ich immer sehr empfänglich. Ich werde das berücksichtigen und wir werden mit der Zeit da auch ein einheitlicheres Schriftbild entwickeln. Basic Beispiele finde ich durchaus gut, sie sollten aber nicht zu lang sein. Auch wenn es vielleicht nicht jedem gefällt, aber ich möchte die Subroutinen so machen, daß sie direkt in den MADS-Crossassembler passen. Es wird einen eigenen Unterpunkt für MADS und auch Eclipse geben, wo man spezielle Dinge genau erklärt. Liebe Grüße Peter

... 2 erste Beiträge sind drin, wobei ich Beitrag 2 noch überarbeiten muss ...

Den Beitrag für "betrag" habe ich angepasst. Dabei bin ich mir noch nicht so ganz sicher, wie die Systematik wird. Es sollen ja primär Subroutinen für Assembler sein als Nachschlagwerk, wo man einfach Routinen, die man braucht findet und in sein Programm einbinden kann. Da viele in MADS entwickeln kann das schon auch MADS - spezifisch sein, wobei ich aber durchaus komplexere Eigenheiten raushalten will, so daß jeder den Code problemlos verstehen kann.

Die Subroutinen kommen direkt nach ganz oben, die Erklärungen und auch mögliche Basic-Beispiele folgen weiter unten. Das hat den Vorteil, daß man die nötigen Routinen direkt hat und für sich kopieren kann. Wer nachlesen will, bekommt das ja darunter erklärt.

Wir fangen erstmal so an und werden sicherlich noch einiges anpassen und verändern mit der Zeit!

Es fehlt dann noch der Link von ABBUC auf das Wiki...

Wie machen wir das nun? Alles an @Dr.Irata schicken oder ein Konto im wiki aufmachen, selbst eintragen und Peter schaut dann drüber, ob es so passt?

PP´s of STARSOFTBerlin____github|meine Webseite|Demozoo

LarsImNetz schrieb: Top! Aber! Um das jetzt gleich mal zur Diskussion zu stellen, ich würde es etwas ausführlicher machen.

Volle Zustimmung von meiner Seite! Sonst haben wir nachher nur eine tolle Sammlung von Code, die vielen nicht wirklich hilft, weil einfach zuviel Kontext fehlt.

Der Eintrag "Addition" gefällt mir da schon sehr gut.

/|\ ... loading .... /|\

... das wird sich alles entwickeln ... mehr Erklärungen und Text finde ich auch richtig und wichtig. Artikel gerne erstmal zu mir, damit ich das sichten und ordnen kann...

Hi,

wenn ich im Bereich SIO mitarbeiten soll würde ich mir eine Umbenennung des Hauptpunktes wünschen, da ich auch SIO-Kommandos von weiteren Peripheriegeräten aufführen würde.

Dann sollte der Punkt vielleicht einfach Atari SIO heißen und die ersten Unterpunkte, die mir so einfallen würden wären "_Standardkommandos für Disk", Atari 810, Atari 1050, Happy 1050, Speedy 1050, PERCOM Block, APE, SIO2USB usw alphabetisch sortiert.

Cheers, Erhard

Jede Info, die zu Hause auf meinem Rechner liegt habe ich unterwegs nicht verfügbar. Jede Info, die im Netz liegt finde ich nicht wieder, wenn ich sie benötige.

Hi,

mir fällt gerade ein, daß es sich anbieten könnte, noch eine Schicht (Geräteklasse <=> ID) dazwischenzuschieben.

Das sähe dann wie folgt aus (zu erweiterndes Beispiel):

Struktur.png

CU, Erhard

Anhänge:

Jede Info, die zu Hause auf meinem Rechner liegt habe ich unterwegs nicht verfügbar. Jede Info, die im Netz liegt finde ich nicht wieder, wenn ich sie benötige.

Sachen die man nicht braucht: im Webserver des Atari Wiki hat eine Festplatte den Geist aufgegeben, das Wiki läuft derzeit nur auf einer Platte (ohne Redundanz). Neue Platte(n) sind bestellt.

https://mastodon.social/@cstrotm https://abbuc.social

cas schrieb: das Wiki läuft derzeit nur auf einer Platte (ohne Redundanz)

der typische Zeitpunkt, wo man sicher sein sollte, daß man eine vollständige und rücksicherbare Datensicherung hat 🙂

CU, Erhard

Jede Info, die zu Hause auf meinem Rechner liegt habe ich unterwegs nicht verfügbar. Jede Info, die im Netz liegt finde ich nicht wieder, wenn ich sie benötige.

Ja, das Backup teste ich gerade :)

Trotz RAID10 (Mirror) hat eine MySQL Datenbank Schaden genommen. Diese spiele ich gerade zurück. Das Backup-Set des für diese DB ist 711 GB gross, und der Restore dauert ~3 Stunden (von Festplatte).

Backup läuft aber nur alle 24 Stunden, daher ist es gut trotzdem ein RAID 10 zu haben.

https://mastodon.social/@cstrotm https://abbuc.social

Ja, Dinge die man nicht braucht. Ich starte jetzt gleich auf Arbeit ein BackUp und Transfer von 600TB. Was soll schon schiefegehen, sind ja nur drei Gewerke parallel am Start. 😀

/|\ ... loading .... /|\

skr schrieb: Ja, Dinge die man nicht braucht. Ich starte jetzt gleich auf Arbeit ein BackUp und Transfer von 600TB. Was soll schon schiefegehen, sind ja nur drei Gewerke parallel am Start. 😀

Und wo liegt das Problem wenn bei 600TB ein paar GB fehlen? A bisserl Schwund is immer. 😂

cas schrieb: Sachen die man nicht braucht: im Webserver des Atari Wiki hat eine Festplatte den Geist aufgegeben, das Wiki läuft derzeit nur auf einer Platte (ohne Redundanz). Neue Platte(n) sind bestellt.

Dann war das Wiki deshalb nicht erreichbar 😲 und ich habe hier bei mir Fehler gesucht 🙄

Das Retrocomputertreffen in Göttingen :arrow: https://www.bitte-8-bit.de

DjayBee schrieb: Und wo liegt das Problem wenn bei 600TB ein paar GB fehlen? A bisserl Schwund is immer. 😂

Dreh halt mal ein Bit in Deiner Software und frag nochmal. 😁

/|\ ... loading .... /|\

Hi,

DjayBee schrieb: ein paar GB fehlen

Du kannst die "paar Gigabyte" ja gerne mit der Hand mal abschreiben 🙂

CU, Erhard

Jede Info, die zu Hause auf meinem Rechner liegt habe ich unterwegs nicht verfügbar. Jede Info, die im Netz liegt finde ich nicht wieder, wenn ich sie benötige.

. Hallo Erhard

Wieso abschreiben, das geht doch mit dem TurboFreezer, oder?

😁

Tschüß

Mathy

Schreibe nicht der Absicht zu, was man mit Dummheit oder Ignoranz erklären kann.

Die neue Platte ist eingebaut, in den kommenden Stunden wird das RAID die Daten auf die neue Platte kopieren, der Server ist in dieser Zeit ein wenig langsamer.

https://mastodon.social/@cstrotm https://abbuc.social

Erhard schrieb: Hi,

DjayBee schrieb: ein paar GB fehlen

Du kannst die "paar Gigabyte" ja gerne mit der Hand mal abschreiben 🙂

CU, Erhard

Zur Strafe: Abtippen mit AMPEL ! 😁

Die Internetanbindung im Rechenzentrum ist ausgefallen ... daher gibt es derzeit keinen Zugriff auf das Atari Entwickler Wiki.

Die Störung sollte bald behoben sein.

Carsten

https://mastodon.social/@cstrotm https://abbuc.social

Neuer Wikispace für das Thema und auf Deutsch klingt nach einer guten Idee. D.h. User dafür wäre erst mal separat, korrekt? Ich mache beruflich fast alles mit (Confuence) Wiki und mein Tipp wäre, die Navigation links primär alphabethisch zu sortieren (ggfs. mit "Übersicht/Einführung") als TOP je Kapitel.

Visit https://www.wudsn.com the home of WUDSN IDE.

Bin gerade über ein Stückchen ASM-Code gestolpert, wo ich überlegen musste, was das macht.

; Irgend ein Wert in den Akku laden...
        lda Value

; Wert, auf den wir vergleichen wollen, hier $FF
        cmp #$ff ; sollte der Value $ff enthalten, ist das Status Register ......ZC 

; Hier der besagte Code, die Kommentare hab ich mal drangepinselt, fürs Verständnis.
        php      ; Status Register auf Stack sichern
        pla      ; Status Register vom Stack in Akku auslesen
        lsr      ; ......ZC -> .......Z
        and #1   ; 1. Bit maskieren

; liefert 1 im Akku, wenn Value == $FF oder 0 wenn Value != $FF und das in nur 5 Bytes.

Hi,

von tricksigem Assembler hab ich ja keine Ahnung ... aber doch vielleicht ein Gedanke:

Bei einem Vergleich folgt ja üblicherweise eine Verzweigung mit BNE/BEQ usw

Hier könnte man mit dem Ergebnis des Vergleichs aber rechnen oder das Bit speichern und das ohne unterschiedliche Anzahl von Taktzyklen bei Verzweigung oder Nicht-Verzweigung...

CU, Erhard

Jede Info, die zu Hause auf meinem Rechner liegt habe ich unterwegs nicht verfügbar. Jede Info, die im Netz liegt finde ich nicht wieder, wenn ich sie benötige.

LarsImNetz schrieb: Bin gerade über ein Stückchen ASM-Code gestolpert, wo ich überlegen musste, was das macht.

Ich würde Deinen Ausführungen so zustimmen, auch wenn ich rätsele was man mit dem Ergebnis machen sollte? Einen Wert in einem Register zu haben hat ja noch keine Funktion. Wird dann danach mit dem Wert gerechnet oder konditionell verzweigt (Branch)? Dann könnte man doch direkt eine CMP+BNE/BEQ ausführen?

Bei bestimmten Timing-kritischen Routine kommt es auf jede Takt an oder halt darauf, es man immer genau gleich viele Takte braucht. Das gilt bei Highspeed SIO/Interrupt-Routinen oder beim "Racing the Beam" auf dem Atari VCS. Dort muss man in jeder Bildschirmzeile taktgenau die TIA Register updaten. Sonst ruckelt/flackert es Und BNE usw. brauch nun mal unterschiedlich viele Takt je nach "springen/kein springen".

In "normalen" Assemblerroutine kommt es nicht auf 1-2 Takte an und man würde das einfacher codieren.

Visit https://www.wudsn.com the home of WUDSN IDE.

Mir wurde gerade folgender Link zugespielt mit drei sehr schnellen 8 Bit*8 Bit=16 Bit Multiplikationsroutinen (90 bzw. 110-150 Zyklen) - für den Preis von 512 bzw. 768 Byte Lookup-Tabellen.

https://everything2.com/title/Fast+6502+multiplication

Das könnte etwas für unser Code-Repo im Wiki sein.

Hallo DjayBee,

danke für den Link, den ich mir gerade angeschaut habe. Ich finde den Code und die Erklärung zunächst etwas unübersichtlich. Im Grunde macht dieser Code folgendes: Das reine Quadrieren erfolgt ausschließlich über Tabellen, denn logischerweise gibt es für das Quadrat einer 8 Bit-Zahl genau 256 Lösungen. Jede Lösung wird entsprechend in zwei Tabellen (Hi-/Lo-Byte) codiert und muss nur abgefragt werden. Ich nehme also die 8 Bit Zahl, frage die 2 Tabellen ab und habe sofort das Ergebnis als 16-Bit-Zahl. Für die Multiplakation von ax muss ich das also insgesamt 3 durchfürhren nach der Formal: ax = (a + x)2/2 - a2/2 + x2/2 Vorher noch a+x bilden, dann alle drei Quadrate durch 2 teilen (was ja super schnell gent) und dann den Summanden bilden. Die Idee ist so einfach wie gut...

LG Peter

. Hallo Peter

Dr. Irata schrieb: ax = (a + x)2/2 - a2/2 + x2/2

Sieht etwas komisch aus. Du meist (a2 + x2)/2 - a2/2 + x2/2?

Tschüß

Mathy

Kurzer Test: a² a₂ Funktioniert bei mir. Aber ob das Forum die hergibt...

Schreibe nicht der Absicht zu, was man mit Dummheit oder Ignoranz erklären kann.

Hallo Mathy, sorry aber das "Hochzeichen" wurde leider beim kopieren verschluckt... Es muss so heißen: ax = (a + x)²/2 - a²/2 + x²/2 Danke für den Hinweis Peter

... ich habe mir nochmal die schnelle Multiplikationsroutine angeschaut und da ist mir etwas aufgefallen: Der Term (a + x)²/2 ist ja insofern blöd, da das Quadrat von einer sehr hohen 8-Bit-Zahl maximal 16 Bit groß sein kann, das Quadrat der Summe von 2 hohen 8-B it-Zahlen aber auch durchaus über 16 Bit groß sein kann! Beispiel: a=255, x=254 -> ax=64770 aber a+x in diesem Beispiel beträgt 509, 509²=259081 -> 32 Bit Die Tabelle um das Ergebnis (a+x)² zu bekommen muss also entsprechend sehr groß sein! Das geht besser und kürtzer! Ich werde das Thema und den Code jetzt als nächstes in einem Extrapost herleiten und entwickeln!

LG Peter

DjayBee schrieb: Mir wurde gerade folgender Link zugespielt mit drei sehr schnellen 8 Bit*8 Bit=16 Bit Multiplikationsroutinen [...]

So so, 3 ...

Hier, der Hammer! Multiplikationen bis der Arzt kommt, nebst Analysen, etc.

https://github.com/TobyLobster/multiply_test

Wow! Da habt ihr ja was richtig tolles auf die Beine gestellt! Habs jetzt erst endeckt... Wirklich super geworden!

keine PN's mehr! Bitte per email kontaktieren! atari1450xld©mega-hz.de

Hi,

in der Schule war ich in Mathe gar nicht mal so schlecht und hab alles mitgeschnitten, einschließlich Integral- und Differenzialrechnung sowie Determinanten.

Aber hier verstehe ich absolut nix. Abgesehen von unendlich vielen Additionen in Scheifen wüßre ich überhaupt nicht, wie ich da auf dem Rechner rangehen würde.

Mein erster Versuch für a * b würde wie folgt aussehen (wobei a und b natürlich auch noch in Speicherstellen sein müssen):

LDA #0
STA $D1
LDA b
STA $D0
LDY a
; Schleife ab hier
L1 CLC
LDA a
ADC $D0
ADC $D1
DEY
BNE L1
RTS

Wie man auf sowas hier kommen kann ...

Dr. Irata schrieb: Es muss so heißen: ax = (a + x)²/2 - a²/2 + x²/2

erschließt sich mir überhaupt nicht.

Nachvollziehen kann ich noch nicht einmal das mit der 768-Byte Tabelle, denn für a=255 und b=255 ergibt das Quadrat der Summe 260100. In Hex 0x3F804, also eine 24-Bit Zahl.

Sprich wir haben einen Zeiger von 0...510 mit je einem 24-Bit Ergebnis.

Nun braucht man für Zeigerbereiche bis 255 nur 16-Bit Ergebnisse und könnte demzufolge die Tabelle verkleinern, was dann aber zusätzliche Berechnungen und / oder Vergleiche erfordert.

Das erfordert doch dann für obige Formel:

Für den ersten Term ein 3-Byte LSR sowie für die beiden anderen Terme ein 2-Byte LSR (ein Bit ganz rechts bleibt da ja wohl nicht übrig da Quadrate ja nie ein ungerades Ergebnis produzieren).

Gefolgt von 24-Bit Subtraktion und 24-Bit Addition.

Falls ich das so überhaupt richtig sehe. Aber wie zur Hölle kommt man auf so eine Formel ?

Das V-Flag meines Brains hat soeben den Wert 1 erhalten.

Erhard

Jede Info, die zu Hause auf meinem Rechner liegt habe ich unterwegs nicht verfügbar. Jede Info, die im Netz liegt finde ich nicht wieder, wenn ich sie benötige.

Hallo und guten Morgen! Danke, daß du das Thema hier nochmal aufführst. Die Formel ist falsch... es muss heißen: a x b = a²/2 + b²/2 - (a-b)²/2 Damit entfällt zum Glück auch die Problematik über 16-Bit!

Alternativ aber ungünstiger:

a x b = (a+b)²/2 - a²/2 - b²/2

der guten Form halber: könnte ein Admin die Formeln in den obigen Beiträgen korrigieren, so dass sie überall richtig dargestellt werden?

... wäre das mit Erklärung und Herleitung ein Artikel im Magazin wert??

FlorianD schrieb: der guten Form halber: könnte ein Admin die Formeln in den obigen Beiträgen korrigieren, so dass sie überall richtig dargestellt werden?

Es gibt ja einen eigenen Beitrag dafür mit Code.... da müsste alles auch richtig sein!